package com.iflytek.jcy.supervise.clue.common.enums;

/**
 * 结果枚举
 *
 * @author <a href=mailto:ktyi@iflytek.com>伊开堂</a>
 * @date 2019-08-06 11:37
 */
public enum ResultEnum implements ResultType {
    /** 成功 */
    SUCCESS(ResultType.SUCCESS, "成功"),

    /** 失败 */
    EXCEPTION(7, "系统异常"),
    FAILED(9, "失败"),

    /* ==================== 通用错误 ===================== */
    INVALID_PARAMETER(1001, "参数不合法"),
    PARAMETER_MISSING(1002, "参数缺失"),
    /** 不支持该参数值, 比如: 方法有一个枚举入参, 但内部实现只支持部分枚举值 */
    PARAMETER_VALUE_UNSUPPORTED(1003, "不支持该参数值"),
    INVALID_PARAMETER_TYPE(1004, "参数类型错误"),
    /** 参数为null或size为0 */
    PARAMETER_IS_EMPTY(1005, "参数不能为空"),
    /** 参数长度超过限制 */
    PARAMETER_SIZE_OVER_LIMIT(1006, "参数长度超过上限"),
    HTTP_METHOD_NOT_SUPPORT(1010, "该接口不支持此http方法"),


    /* ==================== 业务错误 ===================== */
    /* ---- 数据源模块 2xxx ---- */
    // DB 20xx
    DATABASE_SAVE_FAILED(2001, "数据保存失败"),
    DATABASE_UPDATE_FAILED(2002, "数据更新失败"),
    DATABASE_DELETE_FAILED(2003, "数据删除失败"),
    DATABASE_ITEM_NOT_EXIST(2004, "数据不存在"),

    // Redis 21xx

    // fastDFS 22xx
    FASTDFS_UPLOAD_ERROR(2201, "fastDFS文件上传失败"),
    FASTDFS_DOWNLOAD_ERROR(2202, "fastDFS文件上传异常"),


    /* ---- 外部接口 3xxx ---- */


    /* ---- 功能模块 4xxx ---- */
    /* 用户 41xx */
    AUTH_ERROR(4100, "权限异常"),
    LOGIN_REQUIRED(4101, "当前用户还未登录"),
    ROLE_MISSING(4102, "当前用户没有配置必要的角色"),
    PERMISSION_MISSING(4103, "当前用户没有权限"),
    DISABLED_ERROR(4104, "当前用户没有权限"),
    
    /**线索管理模块**/
    CLUE_RESULT_SET_WEIGHT_ERROR(5000,"设置权重失败"),
	CLUE_RESULT_DELETE_ERROR(5001,"删除线索结果失败"),
	CLUE_COLLECTION_NAME_IS_EXIST(5002,"线索集名称已存在"),
	CLUE_NAME_IS_NULL(5003,"线索名称不能为空"),
	CLUE_RYBM_IS_NULL(5003,"人员编码rybm不能为空"),
	CLUE_FEEDBACK_ERROR(5004,"成案反馈失败"),
    CLUE_COLLECTION_UNSELECTED_ERROR(5005,"未选择线索集"),

    RYBM_IS_NULL(5006,"人员编码不能为空！"),
    TIME_IS_OUT_DATE(5007,"设置时间早于当前时间，请重新设置"),
    TASK_NAME_IS_EXIST(5007,"名称重复，请修改"),
    TASK_ID_IS_NULL(5008,"任务id不能为空"),

    MODEL_IS_RELATED_TASK(5009,"线索已关联线索挖掘任务"),
    /** 用户名或密码错误 */
    USERNAME_PASSWORD_ERROR(1100, "用户名或密码错误"),
    LOGIN_FAILED(4105, "登录失败"),
    TASK_REGISTER_FAILED(5010, "任务注册调度中心失败"),
    
    //UAP异常
    UAP_MENU_ERROR(6000, "该账号没有配置菜单，请联系管理员"),
    UAP_ROLE_NOT_ERROR(6001, "该账号没有配置角色，请联系管理员"),
    UAP_GET_TOKEN_ERROR(6002, "获取临时token异常"),
    UAP_INVALID_TOKEN_ERROR(6003, "无效的票据类型"),
    UAP_QUERY_APP_BYCODE_ERROR(6004, "查询应用基本信息错误"),
    UAP_QUERY_USERINFO_BYUSERID_ERROR(6005, "查询用户基本信息错误:账号未同步至UAP，请联系管理员！"),
    UAP_QUERY_AUTHORITY_ERROR(6006, "查询用户基本信息错误"),
    UAP_RESOURCE_NOT_ERROR(6007, "该账号没有配置资源，请联系管理员"),
    ;

    private Integer code;
    private String desc;

    ResultEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public static ResultEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }

        for (ResultEnum anEnum : values()) {
            if (anEnum.getCode().equals(code)) {
                return anEnum;
            }
        }

        return null;
    }

    @Override
    public Integer getCode() {
        return code;
    }

    @Override
    public String getDesc() {
        return desc;
    }
}